Date: Wed, 20 Nov 1996 22:16:30 GMT
Server: NCSA/1.5.1
Last-modified: Wed, 07 Aug 1996 14:41:33 GMT
Content-type: text/html
Content-length: 3705

<title> Computer Communication Networks (CPS 214)</title>
Computer Communication Networks (CPS 214)<p>
Times: MW 5:30-6:45PM, LSRC D106<p>

This course is a general introduction to computer communication
networks.  It focuses on general networking principles augmented with
specific examples taken from the TCP/IP protocol suite.  At present,
the connected TCP/IP Internet is the largest network in the world,
joining approximately ten million machines at universities, government
labs and industrial sites.  Each time you use electronic mail,
rlogin/telnet, ftp, or world-wide web (WWW/Mosaic) you've been using
the TCP/IP protocols.<p>

We will spend time on each layer in the ISO protocol suite.  In
particular we will study:<p>

<ul>
<li>   LAN and WAN technologies (Ethernets, Token rings, ATM, FDDI)
<li>   data communication (error detection, correction and signal encoding)
<li>    routing algorithms (how can we dynamically route packets through
			systems of changing topology and load)
<li>    connection oriented vs. connectionless networks
			(LANs vs. telephone  circuits vs. ATM) 
<li>    congestion control (how to manage (limited!) network resources)
<li>    transport protocols (TCP for reliable stream service, UDP for
			unreliable datagram service, VMTP for transactions
			and remote procedure call)
<li>    performance (what factors influence the efficiency of protocols)
<li>    internetworking  (transparently connecting networks of differing
		     technologies)
<li>    security and privacy (How can I be sure that President Clinton
    	really sent this email message I just received?)
<li>	application protocols: NFS, HTTP (WWW), SMTP (mail), etc.
<li>    emerging Internet technologies: IPSec (Security), DHCP
(obtaining IP addresses dynamically), CIDR, IPv6, etc.
</ul>

This is a "hands on" course and there will be both written and
programming assignments.  In the past, I've given four programming
projects that involve implementing network protocols.  The projects
included implementing a sliding-window data-link layer protocol,
complete with checksums, timeouts and retransmissions; implementing
both the client and server sides of remote procedure calls (using
Sun's RPCGEN facility); and using the "oracle" name server to
dynamically register network services allowing students to write their
own client and server programs and invoke the services provided by
other student servers (e.g. using BSD sockets). <p>

Warning: I will be updating the course this semester, and plan to
cover some aspects of the x-kernel (as described in Peterson & Davie's
book). Thus, the projects described above are likely to change. <p>


Texts:
<ul>
<li> "Computer Networks: A Systems Approach," by Larry Peterson and Bruce
Davie. Morgan Kafmann, 1996.<p>

<li> "Computer Networks," by Andrew Tanenbaum, (3rd Edition),
Prentice Hall, 1996.<p>

<li>"Internetworking with TCP: Principles, Protocols and Architecture,"
by Douglas Comer, (3rd Edition), Prentice Hall, 1996. <p>
<li>
Class notes, which will be handed out during class (I expect to revise
my old notes substantially).
</ul>

Background: The course will be taught at the introductory graduate
level. C programming experience will be a plus, but is not required.
(I may give 1-2 introduction to C programming assignments whose
purpose is to introduce the language.  Picking up C should be
straightforward for those with a solid background in at least one
conventional programming language such as Pascal. Note, however, that
students are expected to learn C on their own time.)  In addition, a
background in basic data structure is assumed.<p>

For more information, contact Thomas Narten, 254-7798,
narten@raleigh.ibm.com.

